/*
 * 设置iptables的过滤规则
 */
#include "stdafx.h"

// 需要过滤的表
//#define IPTABLES_TABLE		"mangle"
#define IPTABLES_TABLE		"filter"
#define TO_STR(num)			#num

void iptables_clear()
{
	// 清除规则
	system("iptables -t " IPTABLES_TABLE " -F");
	// 清除链
	system("iptables -t " IPTABLES_TABLE " -X NF_QUEUE_CHAIN");
	
	//return true;
}

void iptables_init()
{
	iptables_clear();
	// 创建链
	system("iptables -t " IPTABLES_TABLE " -N NF_QUEUE_CHAIN");
	// 创建转跳规
	system("iptables -t " IPTABLES_TABLE " -A NF_QUEUE_CHAIN"
			" -p tcp -m mark --mark 0 -j NFQUEUE --queue-num "
			NFQUEUE_NUM_STR);
	system("iptables -t " IPTABLES_TABLE " -A NF_QUEUE_CHAIN"
			" -p tcp -j MARK --set-mark 0");
	system("iptables -t " IPTABLES_TABLE " -A NF_QUEUE_CHAIN"
			" -p udp -m mark --mark 0 -j NFQUEUE --queue-num "
			NFQUEUE_NUM_STR);
	system("iptables -t " IPTABLES_TABLE " -A NF_QUEUE_CHAIN"
			" -p udp -j MARK --set-mark 0");
	// 过滤中转规则
	system("iptables -t " IPTABLES_TABLE " -I FORWARD -j NF_QUEUE_CHAIN");

	//return true;
}


